@echo off
chcp 65001 > nul
echo 管理者権限を確認しています...
openfiles >nul 2>&1
if %errorlevel% neq 0 (
    echo 【エラー】右クリックして「管理者として実行」してください。
    pause
    exit /b
)

echo Windows Update 関連サービスを停止しています...
:: 確実に止まるまで待機するオプションを追加
net stop wuauserv /y
net stop cryptsvc /y
net status bits >nul 2>&1 && net stop bits /y
net stop msiserver /y

echo 過去の一時ファイルをクリーンアップしています...
:: すでに .old が存在する場合の競合エラーを回避
if exist "%systemroot%\SoftwareDistribution.old" rmdir /s /q "%systemroot%\SoftwareDistribution.old"
if exist "%systemroot%\System32\catroot2.old" rmdir /s /q "%systemroot%\System32\catroot2.old"

echo 新しい一時ファイルをリネームしています...
ren "%systemroot%\SoftwareDistribution" SoftwareDistribution.old
ren "%systemroot%\System32\catroot2" catroot2.old

echo Windows Update 関連サービスを再起動しています...
net start wuauserv
net start cryptsvc
net start bits
net start msiserver

echo システムイメージの修復を試みています(数分かかります)...
:: sfcの前にDISMを実行することで、修復に必要な「正しい部品」を準備します
dism /online /cleanup-image /restorehealth

echo システムファイルの破損をチェックしています(数分かかります)...
sfc /scannow

echo.
echo 【完了】パソコンを再起動してから、もう一度アップデートを試してください。
pause
